package com.ojoin.trade.common.web.controller;

import org.springframework.data.domain.Pageable;
import org.springframework.web.servlet.ModelAndView;

import com.ojoin.trade.common.web.domain.IDentifiable;
import com.ojoin.trade.common.web.domain.Result;

/**
 * 基础控制器接口
 */
public interface BaseController<T extends IDentifiable> {
	/**
	 * 根据ID列表删除对象，如果idList 为空或者空列表则直接返回{@link Result},状态为OK
	 * @param idList 要删除对象的ID列表
	 * @return ModelAndView
	 */
	public Result deleteList(Integer[] ids);

	/**
	 * 删除一条记录
	 * @param id 不能为null，则跳转到错误页面
	 * @return ModelAndView
	 */
	public Result deleteOne(int id);

	/**
	 * 添加一条实体，实体不能为null
	 * @param entity 要添加的实体
	 * @return Result
	 */
	public Result addOne(T entity);

	/**
	 * 跳转到添加页面为insertXXX页面
	 * @return ModelAndView
	 */
	public ModelAndView addView();
	
	
	/**
	 * @return ModelAndView
	 */
	public ModelAndView listView();

	/**
	 * 根据ID查询一个对象，返回页面为viewXXX页面
	 */
	public Result viewOne(int id);

	/**
	 * 更新一个实体，实体不能为null
	 * @param entity 要更新的实体
	 * @return Result
	 */
	public Result editOne(T entity);

	/**
	 * 跳转到更新页面为editXXX页面
	 * @return ModelAndView
	 */
	public ModelAndView editView();
}
